import axios from 'axios';
import { NotificationManager } from '/src/util/notification/notification.js'

// Axios 实例
const request = axios.create({
    baseURL: 'http://localhost:5157', // API 基础地址
    timeout: 1000000, // 1000秒超时
    headers: {
        'Content-Type': 'application/json',
    },
});

// 请求拦截器
request.interceptors.request.use(
    async (config) => {
        return config;
    },
    (error) => {
        console.error('请求拦截错误:', error);
        return Promise.reject(error);
    }
);

// 响应拦截器
request.interceptors.response.use(
    (response) => {
        // 直接返回 data，简化调用
        return response.data;
    },
    (error) => {
        const { response, message } = error;

        if (response) {
            // 服务器响应了错误状态
            const { status, statusText } = response;

            switch (status) {
                case 401:
                    console.warn('认证失败，即将跳转登录页...');
                    // window.location.href = '/login';
                    break;
                case 403:
                    NotificationManager.error('权限不足，无法访问该资源');
                    break;
                case 404:
                    NotificationManager.error('请求的资源不存在');
                    break;
                case 500:
                    NotificationManager.error('服务器内部错误，请联系管理员');
                    break;
                default:
                    NotificationManager.error(`请求失败 [${status}]：${statusText}`);
            }
        } else {
            // 网络异常：超时、DNS、断网、服务未启动
            console.error('网络请求失败:', message);
            NotificationManager.error('网络连接异常，请检查服务器是否运行或网络连接');
        }

        return Promise.reject(error);
    }
);

export default request;